At Lincoln Loop, we don’t just build web platforms from scratch and scale them to accommodate growing demand; we also dedicate ourselves to their long-term maintenance. Some of our partnerships have spanned over a decade.
Let me walk you through …
In a previous blog post, I discussed the advantages of using django CMS to create a Multi-Distribution Channel CMS. To achieve the flexibility required to repurpose content across various channels, it is essential to establish a clear separation between the …
When your organization is considering website improvements, the whole internet becomes an exercise in window-shopping. After all, technology evolves quickly. The moment a new tool from Microsoft, Amazon, or another web giant shifts the industry, everyone thinks, “Can we have …
Here at Lincoln Loop, for the past 15 years, we have built countless Digital experiences (DXP) that help to move our customers’ digital transformation forward.
The ultimate result of what is often a long-term engagement is often a code base …
Launching a website can be an exciting but nerve-wracking experience. With so many moving parts in the website development process, it’s easy to overlook small details that can significantly impact the user experience. To help you avoid potential issues, we’ve …
Whether you are a publisher or marketer, content is pivotal to your role. It either is your product or your product’s success depends on it. But generating the engaging content your brand requires is only half of your challenge. In …
Most of the Django projects I work with take advantage of django.contrib.auth. It manages
users and groups and is tightly coupled with django.contrib.admin. In this post, we are going to
explore how it resists a potential attacker.
The study below …
Virtualization technologies have been around for a while in various forms and over the last several years the container style of virtualization has become popular as a complement (or replacement) to VMs (Virtual Machines / hypervisors). The first half of …
Four years ago, I wrote a blog post called Introduction to Go Debugging with GDB. At the time, the only option was the GNU debugger. Even the official Go documentation page on GDB doesn’t set the bar very high:
GDB …
Nowadays, it’s common to deploy multiple application servers, but it poses a very common problem; How are these application servers going to share the media files contributed by the users?
Cloud providers like Google, Rackspace or Amazon Web Services solve …
This post could have been titled, “How We Use OpenPGP to Protect Our Secrets.” All the use cases illustrated below use a tool called GnuPG to take care of the crypto details for us. GnuPG is a complete and free …
The most famous quote to characterize python speed is:
It is fast enough
I have used this quote many times, and I still believe that it applies to most circumstances if you throw enough hardware at the problem.
Despite Python …
Building a cluster in the cloud is becoming a mundane step that you have to do several times during the life cycle of a project. There are multiple driving forces behind this fact:
Initial set up
Redundancy
Setting up an …
Let’s Encrypt is a new certificate authority. It is a huge improvement over the manual complex process of acquiring and deploying an HTTPS server. The process is now:
Free
Automatic (no more login to sites, filling forms, concatenating certificates)
This …
At Pycon in Montreal few weeks ago I attended a talk that blew my mind away and got me thinking: Python concurrency from the Ground Up: LIVE! by David Beazley. The video is available on YouTube.
The gist of the …
Last week Vitaly and I migrated BotBot.me to new servers and also launched a redesign of the user account section. You can now support us by becoming a subscriber for $3/month and even log personal channels for $2/month. If you …
In the past month we worked to scale up botbot.me. Every few days the bot would get stuck in a deadlock situation that caused outage of the logging service. I had some time in front of me that I decided …
Varnish Saint Mode is a lesser known gem inside varnish that lets you serve stale content from cache, even when your backend servers are unavailable.
This article explains how to configure varnish to take advantage of this feature. If you …
At Lincoln Loop, we have been building large web applications using Django since 2007. Recently, however, we have recently started using Go as a critical network component of Botbot.me.
Reading others’ successes stories about replacing some existing components of their …
An important part of the process process of learning a new language is to learn the ecosystem that helps you to write better code. In a previous article I covered gdb integration with Go.
Next on my list is to …
I spent the vast majority of my time in the last 4 years writing, reading and debugging Python or JavaScript code. The process of learning Go was like a beautiful hike in the mountains with a small rock in my …
When you develop a sizable content heavy web site you quickly learn, hopefully not the hard way, that caching is a very important piece of your infrastructure. The database servers are the typical bottleneck in high volume website.
Common wisdom …
A few weeks ago Django’s team revealed a data leakage bug in the admin application that affects an extremely interesting and undocumented feature. A user that has access to a change_list page of an object in the admin interface can …
Fellow Lincoln Looper, Martin Mahner, posted an excellent write up on how to use proxy models to separate staff and user accounts in Django’s admin. We frequently have a need for this in client projects, but people don’t often consider …
Inspired by Eric Florenzano’s talk, Using Django in Non-Standard Ways (slides in PDF) at DjangoCon and the announcement of Tornado (tornadoweb.org), I decided to try building a small application using the Django Form library and Django ORM inside Tornado. The …